package com.njitzx.util;

import com.j256.simplemagic.ContentInfo;
import com.j256.simplemagic.ContentInfoUtil;
import org.springframework.http.MediaType;
import org.springframework.util.DigestUtils;

import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileUtil {

    /**
     * 代码中通过一个工具类ContentInfoUtil根据文件扩展名获取MIME类型，
     * 并在没有匹配结果时使用一个通用的MIME类型application/octet-stream。
     * 这样做可以更安全、准确地识别文件的MIME类型，确保文件处理的正确性。
     * @param extension
     * @return
     */
    public static String getMimeType(String extension) {
        if (extension == null)
            extension = "";
        //根据扩展名取出mimeType
        ContentInfo extensionMatch = ContentInfoUtil.findExtensionMatch(extension);
        //通用mimeType，字节流
        String mimeType = MediaType.APPLICATION_OCTET_STREAM_VALUE;
        if (extensionMatch != null) {
            mimeType = extensionMatch.getMimeType();
        }
        return mimeType;
    }

    /**
     * 文件进行md5解析
     * @param file
     * @return
     */
    public static String getFileMd5(File file) {
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            String filemd5 = DigestUtils.md5DigestAsHex(fileInputStream);
            return filemd5;
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
    }

    /**
     * 将当前的时间变为文件夹路径
     * @return
     */
    public static String getDefaultFolderPath() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String folder = sdf.format(new Date()).replaceAll("-", "/") + "/";
        return folder;
    }

}
